using EOSDigital.SDK;
using System.Collections.Generic;

namespace EOSDigital.API
{
	public sealed class ISOValues : ValueBase
	{
		private static List<CameraValue> values;

		public static readonly CameraValue Auto;

		public static readonly CameraValue Invalid;

		public static CameraValue[] Values
		{
			get
			{
				return ISOValues.values.ToArray();
			}
		}

		static ISOValues()
		{
			ISOValues.Auto = new CameraValue("ISO Auto", 0, 0.0, PropertyID.ISO);
			ISOValues.Invalid = new CameraValue("N/A", -1, 0.0, PropertyID.ISO);
			ISOValues.values = new List<CameraValue>
			{
				ISOValues.Auto,
				new CameraValue("ISO 50", 64, 50.0, PropertyID.ISO),
				new CameraValue("ISO 100", 72, 100.0, PropertyID.ISO),
				new CameraValue("ISO 125", 75, 125.0, PropertyID.ISO),
				new CameraValue("ISO 160", 77, 160.0, PropertyID.ISO),
				new CameraValue("ISO 200", 80, 200.0, PropertyID.ISO),
				new CameraValue("ISO 250", 83, 250.0, PropertyID.ISO),
				new CameraValue("ISO 320", 85, 320.0, PropertyID.ISO),
				new CameraValue("ISO 400", 88, 400.0, PropertyID.ISO),
				new CameraValue("ISO 500", 91, 500.0, PropertyID.ISO),
				new CameraValue("ISO 640", 93, 640.0, PropertyID.ISO),
				new CameraValue("ISO 800", 96, 800.0, PropertyID.ISO),
				new CameraValue("ISO 1000", 99, 1000.0, PropertyID.ISO),
				new CameraValue("ISO 1250", 101, 1250.0, PropertyID.ISO),
				new CameraValue("ISO 1600", 104, 1600.0, PropertyID.ISO),
				new CameraValue("ISO 2000", 107, 2000.0, PropertyID.ISO),
				new CameraValue("ISO 2500", 109, 2500.0, PropertyID.ISO),
				new CameraValue("ISO 3200", 112, 3200.0, PropertyID.ISO),
				new CameraValue("ISO 4000", 115, 4000.0, PropertyID.ISO),
				new CameraValue("ISO 5000", 117, 5000.0, PropertyID.ISO),
				new CameraValue("ISO 6400", 120, 6400.0, PropertyID.ISO),
				new CameraValue("ISO 8000", 123, 8000.0, PropertyID.ISO),
				new CameraValue("ISO 10000", 125, 10000.0, PropertyID.ISO),
				new CameraValue("ISO 12800", 128, 12800.0, PropertyID.ISO),
				new CameraValue("ISO 16000", 131, 16000.0, PropertyID.ISO),
				new CameraValue("ISO 20000", 133, 20000.0, PropertyID.ISO),
				new CameraValue("ISO 25600", 136, 25600.0, PropertyID.ISO),
				new CameraValue("ISO 51200", 144, 51200.0, PropertyID.ISO),
				new CameraValue("ISO 102400", 152, 102400.0, PropertyID.ISO),
				ISOValues.Invalid
			};
		}

		public static CameraValue GetValue(int value)
		{
			return ValueBase.GetValue(value, ISOValues.values);
		}

		public static CameraValue GetValue(string value)
		{
			return ValueBase.GetValue(value, ISOValues.values);
		}

		public static CameraValue GetValue(double value)
		{
			return ValueBase.GetValue(value, ISOValues.values);
		}
	}
}
